#ifndef __APP_DEVICE_H__
#define __APP_DEVICE_H__
#include"app_buffer.h"
#include<pthread.h>
 #define DEVICE_FILENAME "/dev/ttyS1"
//#define DEVICE_FILENAME "/home/wpcwpc/linux_gateway/test_device.txt"
/**
 * 设备结构体
 */
typedef struct {
    int connect_type;
    //文件地址
    char *dev_filename;//设备文件地址
    int dev_fd;//设备文件的文件描述符
    //上行缓冲区
    //下行缓冲区
    app_buffer_t* dev_up_buffer;
    app_buffer_t *dev_down_buffer;
    pthread_t read_thread;//读线程
    int (*post_read)(char*,int); //读后预处理函数
    int (*pre_write)(char*,int); //写前预处理函数

} app_device_t;

/**
 * @brief 设备模块初始化
 * 返回结构体为了 其他模块初始化回调函数
 */

app_device_t* app_device_init();

 /**
  * 设备模块启动
  * 1. 创建读线程(上行通道)
  * 2, 向mqtt注册接受模块(下行通道)
  */
 void app_device_start();

 /**
  * 设备模块销毁
  */
 void app_device_destroy();

#endif /* __APP_DEVICE_H__ */